package service

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/gocolly/colly"
)

// OpenWeb 自动访问门户页面
func OpenWeb(ctx *gin.Context) {
	url := "http://127.0.0.1:5173/"
	c := colly.NewCollector()

	// 在访问页面之前执行的回调函数
	c.OnRequest(func(r *colly.Request) {
		fmt.Println("Visiting", r.URL.String())
	})

	// 在访问页面之后执行的回调函数
	c.OnResponse(func(r *colly.Response) {
		fmt.Println("Visited", r.Request.URL.String())
	})

	// 在访问页面时发生错误时执行的回调函数
	c.OnError(func(r *colly.Response, err error) {
		fmt.Println("返回结果", r.Body)
		fmt.Println("Error:", err)
	})

	// 在访问页面时发现图片时执行的回调函数
	c.OnHTML("img", func(e *colly.HTMLElement) {
		url := e.Attr("src")
		if url != "" {
			fmt.Println("Found image:", url)
			// TODO: 下载图片并保存到本地

		}
	})

	err := c.Visit(url)
	if err != nil {
		fmt.Println("错误信息", err)
		return
	}

}

func VisitImg(ctx *gin.Context) {
	c := colly.NewCollector()

	// 在访问页面之前执行的回调函数
	c.OnRequest(func(r *colly.Request) {
		fmt.Println("Visiting", r.URL.String())
	})

	// 在访问页面之后执行的回调函数
	c.OnResponse(func(r *colly.Response) {
		fmt.Println("Visited", r.Request.URL.String())
	})

	// 在访问页面时发生错误时执行的回调函数
	c.OnError(func(r *colly.Response, err error) {
		fmt.Println("Error:", err)
	})

	// 在访问页面时发生重定向时执行的回调函数
	//c.OnRedirect(func(r *colly.Response) {
	//	fmt.Println("Redirected to", r.Request.URL.String())
	//})

	// 在访问页面时发现图片时执行的回调函数
	c.OnHTML("img", func(e *colly.HTMLElement) {
		url := e.Attr("src")
		if url != "" {
			fmt.Println("Found image:", url)
			// TODO: 下载图片并保存到本地

		}
	})

	// 发起访问  输入你要访问的网址 https://www.169tp.com/  https://www.pexels.com/zh-cn/
	url := "https://www.169tp.com/"
	err := c.Visit(url)
	if err != nil {
		fmt.Println("错误信息", err)
		return
	}
}

// 这个教程看起来没有那么方便学习使用
